/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package xmlaufgabe4;

import java.util.ArrayList;

/**
 * Klasse zur Darstellung eines Buches und allen zugehoerigen Informationen.
 * 
 * @author Adrian Cieluch
 */
public class Book extends DataElement {
    /**
     * Speichert den Verlag.
     */
    private String publisher;
    /**
     * Speichert die Autoren.
     */
    private ArrayList<String> author;
    /**
     * Speichert die ISBN.
     */
    private String isbn;
    /**
     * Speichert die Bindung.
     */
    private String binding;
    /**
     * Speichert die Edition.
     */
    private String edition;
    /**
     * Speichert die Seitenanzahl.
     */
    private String pages;

    /**
     * Initialisiert alle Attribute
     */
    public Book() {
        super();
        publisher = "";
        author = new ArrayList<String>();
        isbn = "";
        binding = "";
        edition = "";
        pages = "";
    }
    
    /**
     * Ermittelt die Anzahl der leeren Attribute und gibt diese zurueck.
     * 
     * @return Anzahl der leeren Attribute
     */
    @Override
    public int getEmptySlotCount() {
        empty = 0;
        
        this.findEmptySlots();
        
        if(publisher.isEmpty())
            empty++;
        
        if(author.isEmpty())
            empty++;
        
        if(isbn.isEmpty())
            empty++;
        
        return empty;
    }
    
    /**
     * Gibt den Verlag zurueck.
     * 
     * @return der Verlag
     */
    public String getPublisher() {
        return publisher;
    }

    /**
     * Setzt den Verlag
     * 
     * @param publisher der zu setzende Verlag
     */
    public void setPublisher(String publisher) {
        this.publisher = publisher;
    }

    /**
     * Gibt den Autor an Hand des Index zurueck.
     * 
     * @param index der Index
     * @return der Autor
     */
    public String getAuthorByIndex(int index) {
        return author.get(index);
    }

    /**
     * Fuegt einen Autor hinzu.
     * 
     * @param author hinzuzufuegender Autor
     */
    public void addAuthor(String author) {
        this.author.add(author);
    }
    
    /**
     * Gibt die Anzahl der Autoren zurueck.
     * 
     * @return Anzahl der Autoren
     */
    public int getAuthorCount() {
        return author.size();
    }

    /**
     * Gibt die ISBN zurueck.
     * 
     * @return die ISBN
     */
    public String getIsbn() {
        return isbn;
    }

    /**
     * Setzt die ISBN
     * 
     * @param isbn die zu setzende ISBN
     */
    public void setIsbn(String isbn) {
        this.isbn = isbn;
    }

    /**
     * Gibt die Bindung zurueck.
     * 
     * @return die Bindung
     */
    public String getBinding() {
        return binding;
    }

    /**
     * Setzt die Bindung.
     * 
     * @param binding die zu setzende Bindung
     */
    public void setBinding(String binding) {
        this.binding = binding;
    }

    /**
     * Gibt die Edition zurueck.
     * 
     * @return die Edition
     */
    public String getEdition() {
        return edition;
    }

    /**
     * Setzt die Edition.
     * 
     * @param edition die zu setzende Edition
     */
    public void setEdition(String edition) {
        this.edition = edition;
    }

    /**
     * Gibt die Seitenanzahl zurueck.
     * 
     * @return die Seitenanzahl
     */
    public String getPages() {
        return pages;
    }

    /**
     * Setzt die Seitenanzahl.
     * 
     * @param pages die zu setzende Seitenanzahl
     */
    public void setPages(String pages) {
        this.pages = pages;
    }
}